package org.loujiarong.yugioh.gameplay.effect;

import java.util.List;

import org.loujiarong.yugioh.gameplay.card.Card;
import org.loujiarong.yugioh.gameplay.duel.Duel;
import org.loujiarong.yugioh.util.GameConstants.EffectType;

public abstract class Effect
{
   protected boolean optional;
   protected boolean multiple;
   protected Enum<EffectType> type;
   protected List<Effect> effects;
   protected boolean chainable; 
   protected Card card;
   
   public abstract boolean activate();   
   public abstract boolean activable();
   
   public void resolve(Duel duel) {
	   
   }
   
	public boolean isOptional() {
		return optional;
	}
	public void setOptional(boolean optional) {
		this.optional = optional;
	}
	public boolean isMulpitle() {
		return multiple;
	}

	public Enum<EffectType> getType() {
		return type;
	}
	public void setType(Enum<EffectType> type) {
		this.type = type;
	}
	public List<Effect> getEffects() {
		return effects;
	}
	public void setSubEffect(List<Effect> subEffect) {
		this.effects = subEffect;
	}
	public boolean isChainable() {
		return chainable;
	}
	public void setChainable(boolean chainable) {
		this.chainable = chainable;
	}
	public Card getCard() {
		return card;
	}
	public void setCard(Card card) {
		this.card = card;
	}
	public void setEffects(List<Effect> effects) {
		this.effects = effects;
	}
   
}
